package com.marsrover.state;

import com.marsrover.Rover;
import com.marsrover.RoverManager;

public abstract class RoverManagerState {
	public static final RoverManagerState READY_TO_BUILDER_ROVER = new ReadyToBuildRover();
	public static final RoverManagerState BUILD_SUCCESS = new BuildSuccess();
	public static final RoverManagerState COMMANDS_READY = new CommandsReady();
	public static final RoverManagerState ROVER_RUNNING = new RoverRunning();

	protected RoverManager.Executor createExecutor(RoverManager roverManager) {
		return roverManager.new Executor();
	}

	public abstract Rover buildRover(RoverManager roverManager, String initLocationInfo);

	public abstract void sendCommands(RoverManager roverManager, String commands);

	public abstract void launchRover(RoverManager roverManager);
}
